﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Obligatorio1.Controladores;
using Obligatorio1.Modelo;


namespace Obligatorio1
{
    class ManejadorDireccion
    {
        private static ManejadorDireccion manejador = null;

        public static ManejadorDireccion getInstance()
        {
            if (manejador == null)
            { manejador = new ManejadorDireccion(); }
            return manejador;
        }

        public void borrarDireccion(Direccion d)
        {
            try
            {            
                Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();
                oe.Direccion.DeleteObject(d);
                oe.SaveChanges();
            }
            catch (Exception e) { Console.WriteLine(e.Message); }
        }

        public void agregarDireccion(Direccion d)
        {
            try
            {
                Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();
                oe.Direccion.AddObject(d);
                oe.SaveChanges();
            }
            catch (Exception e) { Console.WriteLine(e.Message); }
            
        }

        public String exportar(char separador, int idPersona)
        {
            String exp = "";

            Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();

            var direccionesPersona = from Direccion d in oe.Direccion.DefaultIfEmpty()
                                     where (d.idPersona == idPersona)
                                     select d;

            foreach (var d in direccionesPersona)
            {
                exp += separador + d.direccion + separador + d.ciudad + separador + d.pais + separador +
                        d.codigoPostal + separador + d.tipo;
            }

            return exp;
        }

        internal bool Igual(Direccion dir, Direccion d)
        {
            return dir.idPersona == d.idPersona && dir.direccion.Equals(d.direccion) &&
                dir.ciudad.Equals(d.ciudad) && dir.pais.Equals(d.pais);
        }
    }   
}
